Bash Shell Scripting Errors: ./myDemo: 56: Syntax error: Unterminated quoted string [EDITED]

Posted by ??? on Stack Overflow See other posts from Stack Overflow or by ???
Published on 2009-12-07T16:55:22Z Indexed on 2010/04/05 15:23 UTC
Read the original article Hit count: 208

Filed under:
|

Could someone take a look at this code and find out what's wrong with it?

#!/bin/sh
while :
do
    echo " Select one of the following options:"
    echo " d or D) Display today's date and time"
    echo " l or L) List the contents of the present working directory"
    echo " w or W) See who is logged in"
    echo " p or P) Print the present working directory"
    echo " a or A) List the contents of a specified directory"
    echo " b or B) Create a backup copy of an ordinary file"
    echo " q or Q) Quit this program"
    echo " Enter your option and hit <Enter>: \c"
    read option 
    case "$option" in
    	d|D) date
    	     ;;
    	l|L) ls $PWD
    	     ;;
    	w|w) who
        	     ;;
    	p|P) pwd
    	     ;;
    	a|A) echo "Please specify the directory and hit <Enter>: \c"
    	     read directory
         			if [ "$directory = "q" -o "Q" ]
    			then
    				exit 0
    			fi

    			while [ ! -d "$directory" ]
    			do
    			        echo "Usage: "$directory" must be a directory."
    				echo "Re-enter the directory and hit <Enter>: \c"
    				read directory

    					if [ "$directory" = "q" -o "Q" ]
    					then	
    		 				exit 0

    					fi

    			done
    				printf ls "$directory"

    	    ;;	
         	b|B) echo "Please specify the ordinary file for backup and hit <Enter>: \c"
    	     read file
    			if [ "$file" = "q" -o "Q" ]
    			then
    				exit 0
    			fi     

    			while [ ! -f "$file" ]
    			do
    				echo "Usage: \"$file\" must be an ordinary file."
    				echo "Re-enter the ordinary file for backup and hit <Enter>: \c"
    				read file
    					if [ "$file" = "q" -o "Q" ]
    					then
    		   	  			exit 0
    					fi				
    			done
    				cp "$file" "$file.bkup"
                 ;;

    	q|Q) exit 0
    	     ;;

    esac
    echo
done
exit 0

There are some syntax errors that I can't figure out. However I should note that on this unix system echo -e doesn't work (don't ask me why I don't know and I don't have any sort of permissions to change it and even if I wouldn't be allowed to)

Bash Shell Scripting Error: "./myDemo ./myDemo: line 62: syntax error near unexpected token done' ./myDemo: line 62: " [Edited]

EDIT: I fixed the while statement error, however now when I run the script some things still aren't working correctly.

  1. It seems that in the b|B) switch statement

    cp $file $file.bkup doesn't actually copy the file to file.bkup ?

  2. In the a|A) switch statement

ls "$directory" doesn't print the directory listing for the user to see ?

#!/bin/bash
while $TRUE
do
        echo " Select one of the following options:"
        echo " d or D) Display today's date and time"
        echo " l or L) List the contents of the present working directory"
        echo " w or W) See who is logged in"
        echo " p or P) Print the present working directory"
        echo " a or A) List the contents of a specified directory"
        echo " b or B) Create a backup copy of an ordinary file"
        echo " q or Q) Quit this program"
        echo " Enter your option and hit <Enter>: \c"
        read option
        case "$option" in
                d|D) date
                     ;;
                l|L) ls pwd
                     ;;
                w|w) who
                     ;;
                p|P) pwd
                     ;;
                a|A) echo "Please specify the directory and hit <Enter>: \c"
                     read directory
                        if [ ! -d "$directory"  ]
                        then
                                while [ ! -d "$directory" ]
                                do
                                        echo "Usage: "$directory" must be a directory."
                                        echo "Specify the directory and hit <Enter>: \c"
                                        read directory

                                        if [ "$directory" = "q" -o "Q" ]
                                        then
                                        exit 0

                                        elif [ -d "$directory" ]
                                        then
                                                ls "$directory"

                                        else
                                        continue
                                        fi
                                done
                        fi
                        ;;
                b|B) echo "Specify the ordinary file for backup and hit <Enter>: \c"
                     read file
                        if [ ! -f "$file" ]
                         then
                                while [ ! -f "$file" ]
                                do 
                                        echo "Usage: "$file" must be an ordinary file."
                                        echo "Specify the ordinary file for backup and hit <Enter>: \c"
                                        read file
                                        if [ "$file" = "q" -o "Q" ]
then
                                        exit 0
                                        elif [ -f "$file" ]
                                        then
                                        cp $file $file.bkup
                                        fi
                                done
                        fi
                        ;;

                q|Q) exit 0
                     ;;

        esac
        echo
done
exit 0

Another thing... is there an editor that I can use to auto-parse code? I.e something similar to NetBeans?

© Stack Overflow or respective owner

Related posts about syntax-error

Related posts about bash